WSDL-logo

WSDL คือ

Web Services Description Language หรือ WSDL คือ เอกสารข้อมูลในรูปแบบ XML ใช้ในการบอกหน้าที่การทำงานของ web service มีลักษณะเป็น file (.wsdl) ซึ่งสามารถอ่านออกได้ทั้ง human และ machine บ่งบอกถึงลักษณะการเรียกใช้งาน web service ค่า parameter อะไรบ้างที่ต้องใส่ และ โครงสร้างของ response กลับมาจะเป็นอย่างไร โดย WSDL อ่านว่า วิส-เต้าว์

ปัจจุบัน version ของ WSDL อยู่ที่ WSDL2.0 ซึ่งความหมายของตัวย่อได้เปลี่ยนไปจาก version 1.1 ที่ D หมายถึง “Definition”

 

หน้าที่ของ WSDL

WSDL ใช้ในการอธิบายถึงการให้บริการ ของฝั่ง endpoint ที่อยู่ในรูป XML format document มักถูกใช้งานควบคู่กับ SOAP เพื่อให้ข้อมูล XML Schema หรือโครสร้างของ Web service บน Internet โดยฝั่ง client program จะทำการเชื่อมต่อไปยัง web service เพื่ออ่านข่อมูล WSDL file และทำการวิเคราะห์คำสั่งที่สามารถใช้งานได้บน server ส่วนข้อมูล datatype แบบพิเศษที่จำเป็นก็ถูกรวมอยู่ใน WSDL file เช่นกัน ทำให้ client สามารถใช้งาน SOAP เพื่อส่งคำสั่งจากชุดข้อมูลใน WSDL file ไปบน HTTP

สำหรับ version 2.0 ในปัจจุบันจะทำการรับคำสั่ง HTTP ได้ทั้งหมดแล้วทั้ง GET, PUT, POST, DELETE (ไม่ใช่แค่ GET, POST ใน version1.1) แน่นอนว่าย่อมรองรับได้ดีขึ้นสำหรับ RESTful webservice อย่างไรก็ตามการทำให้รองรอบตามมาตราฐานยังค่อยข้างยากสำหรับชุด software ที่มีอยู่ เพราะส่วนใหญ่รองรับ WSDL 1.1 ซะมากกว่า

 

โครงสร้างของ WSDL

WSDL 1.1 Term WSDL 2.0 Term Description
Service Service  ประกอบด้วยชุดของ function ที่สามารถใช้งานบน web service
Port Endpoint  กำหนดปลายทางของ web service ซึ่งจะอยู่ในรูปแบบของ HTTP URL
Binding Binding  บอกถึงวิธีเชื่อมต่อ และกำหนดวิธี Bind ของ SOAP
PortType Interface  รายละเอียดของ web service ที่สามารถส่งคำสั่งได้ และ ข้อมูลที่ใช้ในการส่งคำสั่ง
Operation Operation  กำหนด SOAP action ใน header และ ลักษณะการ encode ของ message
Message n/a   ปกติจะเป็นส่วนเนื่อข้อมูล message ที่ใช้สั่งการ ซึ่ง message จะประกอบด้วยข้อมูลที่ต้องการให้ทำ สำหรับ WSDL 2.0 ได้มีการนำส่วนนี้ออกไป เนื่องจาก XML schema ได้กำหนดมาตราฐาน input, output ออกมาแล้ว
Types Types  บ่งบอกถึงข้อมูลภาษา XML Schema หรือ XSD ที่ใช้

 

wsdl schema

 

ตัวอย่าง SOAP.wsdl

<?xml version="1.0"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  xmlns:hy="http://www.herongyang.com/Service/"
  targetNamespace="http://www.herongyang.com/Service/">

  <wsdl:documentation>
    Hello_WSDL_11_SOAP.wsdl
    Copyright (c) 2007 by Dr. Herong Yang, herongyang.com
    All rights reserved
  </wsdl:documentation>

  <wsdl:types>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      targetNamespace="http://www.herongyang.com/Service/">
      <xsd:element name="HelloRequest" type="xsd:string"/>
      <xsd:element name="HelloResponse" type="xsd:string"/>
    </xsd:schema>
  </wsdl:types>

  <wsdl:message name="helloInputMessage">
    <wsdl:part name="helloInputPart" element="hy:HelloRequest"/>
  </wsdl:message>
  <wsdl:message name="helloOutputMessage">
    <wsdl:part name="helloOutputPart" element="hy:HelloResponse"/>
  </wsdl:message>

  <wsdl:portType name="helloPortType">
    <wsdl:operation name="Hello">
      <wsdl:input name="helloInput"
        message="hy:helloInputMessage"/>
      <wsdl:output name="helloOutput"
        message="hy:helloOutputMessage"/>
    </wsdl:operation>
  </wsdl:portType>

  <wsdl:binding name="helloBinding" type="hy:helloPortType">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="Hello">
      <soap:operation
        soapAction="http://www.herongyang.com/Service/Hello"/>
      <wsdl:input name="helloInput">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="helloOutput">
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>

  <wsdl:service name="helloService">
    <wsdl:port name="helloPort" binding="hy:helloBinding">
      <soap:address
location="http://www.herongyang.com/Service/Hello_SOAP_11.php"/>
    </wsdl:port>
  </wsdl:service>

</wsdl:definitions>

 

 

Author: Suphakit Annoppornchao

Credit: https://saixiii.com, https://en.wikipedia.org

2 Thoughts to “WSDL คืออะไร WSDL คือ เอกสารข้อมูลของ web service”

  1. […] session ซึ่งต่างจาก webservice แบบอื่นเช่น WSDL และ SOAP การทำงานของ RESTful Webservice จะอาศัย URI/URL […]

  2. […] WSDL (Web Services Description Language) ใช้ในการอธิบายโครงสร้างของ service ทั้งหมด หรือ คู่มือการใช้งาน […]

Leave a Reply